In an interface of a computer, the maximum clock frequency is determined on the basis of a standard required to the outside, and it sometimes occurs that a communication or a process cannot be performed without comforting to the aforementioned standard. However, in the inside of the apparatus, it is possible to increase the clock frequency so long as circuit elements, such as ICs, can follow, and a speed of a data process can be increased in proportion to the clock frequency. In such a case, it is indispensable to synchronize a data and a control signal changing in accordance with a clock of the interface with a system clock, and the synchronizing circuit is used for this purpose.
A control signal changing by "1" every clock, such as a pointer of a FIFO (First In First Out) type or a counter, is sometimes desired to be synchronized. For example, as a method for synchronizing datas composed of plural bits, a circuit of asynchronous FIFO type, in which there is a difference ina clock between the write and read circuits, is used. In such a case, it is necessary to certainly synchronize the pointers of the write and read circuits.
The simplest structure of the synchronizing circuit is that a data to be synchronized is inputted to a flip-flop circuit (a F/F circuit, hereinafter), the F/F circuit is made to operate by applying a clock signal thereto, and a synchronized data is outputted.
According to the conventional synchronizing circuit, a following problem occurs.
In case that a pointer represented by a ordinary binary code is synchronized, if the data is latched by the synchronizing circuit (the F/F circuit) on a course of a transition of the data, it may well be that the data will be regarded as a quite different one, because there is a difference in delay between the respective bits. For example, in case that a signal composed of three bits is latched on a course of a transition from "011" to "100", if bit 2 of "100" is latched after the transition and bits 1 and 0 are latched before the transition, the output data of the synchronizing circuit becomes "111", which is quite different from "011" and "100". Moreover, since "111" may occur at the time of normal operation, the error of synchronizing cannot be detected.
Next, in case that a pointer of a one hot type is latched on the course of the transition, the number of "1"s is sometimes regarded as 0 or 2. For example, in case that a pointer composed of five bits is latched on a course of a transition form "00010" to "00100", if bit 1 or 2 delays, it may well be that the output data of the synchronizing circuit will be regarded as "00110" or "00000". However, in such a case, it can be clearly recognized that an error occurs in the synchronizing circuit. In order to cope with such a situation, the synchronizing circuit must be provided with a device for processing an irregularly synchronized data, hence much labor is required for a circuit design, a structure becomes complicated, and an increasing in cost is inevitable.